home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d18 / nrpas13.arc / POLINT.DEM < prev    next >
Text File  |  1991-05-01  |  2KB  |  61 lines

  1. PROGRAM d3r1 (input,output);
  2. (* driver for routine POLINT *)
  3. LABEL 1;
  4. CONST
  5.    np=10;   (* maximum value for n *)
  6.    pi=3.1415926;
  7. TYPE
  8.    glnarray = ARRAY [1..np] OF real;
  9. VAR
  10.    i,n,nfunc : integer;
  11.    dy,f,x,y : real;
  12.    xa,ya : glnarray;
  13.  
  14. (*$I MODFILE.PAS *)
  15. (*$I POLINT.PAS *)
  16.  
  17. BEGIN
  18.    writeln ('generation of interpolation tables');
  19.    writeln (' ... sin(x)   0<x<pi');
  20.    writeln (' ... exp(x)   0<x<1 ');
  21.    writeln ('how many entries go in these tables? (note: n<10)');
  22.    readln (n);
  23.    FOR nfunc := 1 to 2 DO BEGIN
  24.       IF (nfunc = 1) THEN BEGIN
  25.          writeln;
  26.          writeln ('sine function from 0 to pi');
  27.          FOR i := 1 to n DO BEGIN
  28.             xa[i] := i*pi/n;
  29.             ya[i] := sin(xa[i])
  30.          END;
  31.       END ELSE IF (nfunc = 2) THEN BEGIN
  32.          writeln;
  33.          writeln('exponential function from 0 to 1');
  34.          FOR i := 1 to n DO BEGIN
  35.             xa[i] := i*1.0/n;
  36.             ya[i] := exp(xa[i])
  37.          END;
  38.       END ELSE BEGIN
  39.          GOTO 1
  40.       END;
  41.       writeln;
  42.       writeln ('x':9,'f(x)':13,'interpolated':16,'error':11);
  43.       FOR i := 1 to 10 DO BEGIN
  44.          IF (nfunc = 1) THEN BEGIN
  45.             x := (-0.05+i/10.0)*pi;
  46.             f := sin(x)
  47.          END ELSE IF  (nfunc = 2) THEN BEGIN
  48.             x := (-0.05+i/10.0);
  49.             f := exp(x)
  50.          END;
  51.          polint(xa,ya,n,x,y,dy);
  52.          writeln (x:12:6,f:12:6,y:12:6,' ':4,dy:11)
  53.       END;
  54.       writeln;
  55.       writeln ('***********************************');
  56.       writeln ('press RETURN');
  57.       readln
  58.    END;
  59. 1:
  60. END.
  61.